SRCS	:= $(wildcard *.cpp)

CC		= g++
INCPATH	= ../include
CCFLAG	= -I $(INCPATH) -c -g
LDFLAG = -L../crossbit -lcrossbit -L../arch
LDSFLAG = -T../script/crossbit.lds -static 

APP_OBJS = mips2x86.o mips2x86_SimpleRegAlloc.o mips2x86_GlobalRegAlloc.o mips2x86_GraphRegAlloc.o mips2x86_LeastUseRegAlloc.o
APP = mips2x86 mips2x86_SimpleRegAlloc mips2x86_GlobalRegAlloc mips2x86_GraphRegAlloc mips2x86_LeastUseRegAlloc

all: $(APP_OBJS) $(APP)
	@echo "done!"

$(APP_OBJS):%.o:%.cpp
	$(CC) $(CCFLAG) $(CFLAGS) $? -o $@

mips2x86: $(APP_OBJS) ../arch/*.a 
	$(CC) $@.o $(LDFLAG) -lmips -lx86 $(LDSFLAG) -o $@

mips2x86_SimpleRegAlloc:
	$(CC) $@.o $(LDFLAG) -lmips -lx86 $(LDSFLAG) -o $@

mips2x86_GlobalRegAlloc:
	$(CC) $@.o $(LDFLAG) -lmips -lx86 $(LDSFLAG) -o $@

mips2x86_GraphRegAlloc:
	$(CC) $@.o $(LDFLAG) -lmips -lx86 $(LDSFLAG) -o $@

mips2x86_LeastUseRegAlloc:
	$(CC) $@.o $(LDFLAG) -lmips -lx86 $(LDSFLAG) -o $@
	 

.PHONY:clean
clean:
	rm -rf *.o
	rm -f $(APP)
